home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr36 / mapl0301.zip / USR-ED.BAS < prev    next >
BASIC Source File  |  1993-04-13  |  25KB  |  836 lines

  1. '   Compiler commands or PDS7.1
  2. 'bc /O /Fpa /s /G2 /Ot /MBF e:\rbbs\Chat\rbbssub5.bas,rbbssub5.obj;
  3. '
  4. '
  5. ' $linesize:132
  6. ' $title: 'USR-ED.BAS 17.4, Copyright 1986 - 92 by D. Thomas Mack'
  7. '  Copyright 1991 by D. Thomas Mack, all rights reserved.
  8. '  Modifications By Peter Eibl (C) 1993 for RBBS 17-4
  9. '  Name ...............: USR-ED.BAS
  10. '  First Released .....: Jan 24, 1993
  11. '  Subsequent Releases.: 
  12. '  Copyright ..........: 1986 - 1993
  13. '  Purpose.............: To move code into sub moduls to free up space
  14. '                        In RBBS-PC to allow RBBS to have additional
  15. '                         modifications and still allow the use of
  16. '                         QuickBasic 3.0 and 4.5 compilers
  17. '  Parameters..........: Most parameters are passed via a COMMON statement.
  18. '
  19. ' $INCLUDE: 'RBBS-VAR.BAS'
  20. '
  21. ' $SUBTITLE: 'Usered - subroutine to edit users from Sysops 5) command'
  22. ' $PAGE
  23. '
  24.  
  25.  Sub Usred (EditFromRead,TempHashValue$,UserRecordHold$,RegDateHold$,UserSecLevelSave,WasTu)  Static
  26.  
  27. 11001 ZStopInterrupts = ZTrue
  28.       WasI = 1
  29.       ScanUsers = ZFalse
  30.       IF EditFromRead = 1 THEN GOTO 11341
  31.       x = 304                              'Pe 02/02/93
  32.       Gosub 30000                           'Pe 02/02/93
  33.       ZOutTxt$ = OutTxt$
  34.       GOSUB 12930
  35. 11003 IF ZWasQ = 0 THEN _
  36.       IF EditFromRead > 0 THEN _
  37.          GOTO 11325 _
  38.       ELSE _
  39.          ZUserFileIndex = WasTU : _
  40.          GOTO 20093
  41.       WasQQ = 0
  42.       ZWasZ$ = LEFT$(ZUserIn$(ZAnsIndex),1)
  43.       CALL AllCaps (ZWasZ$)
  44.       IF ZWasZ$ = "A" THEN _
  45.          GOTO 12300 _
  46.       ELSE IF ZWasZ$ = "M" THEN _
  47.               ZStopInterrupts = ZTrue _
  48.            ELSE IF ZWasZ$ = "P" THEN _
  49.                    WasQQ = ZTrue _
  50.                 ELSE IF ZWasZ$ = "S" THEN _
  51.                         ScanUsers = ZTrue : _
  52.                         ZStopInterrupts = ZTrue _
  53.                      ELSE IF ZWasZ$ <> "L" THEN _
  54.                              GOTO 11001
  55. 11005 CALL OpenUser (ZHighestUserRecord)
  56.       GOSUB 29450
  57.       WasZ = 1
  58.       IF ScanUsers THEN _
  59.       x = 305 : _                              'Pe 02/02/93
  60.       Gosub 30000 : _                           'Pe 02/02/93
  61.          ZOutTxt$ = OutTxt$ + ZUserLocation$ + ", L)evel" + _
  62.               LEFT$(", H)ash id",-9*(ZStartHash > 1 AND ZLenHash > 0)) : _
  63.          GOSUB 12930 : _
  64.          ZOutTxt$ = "" : _
  65.          ScanFunction$ = LEFT$(ZUserIn$(1),1) : _
  66.          CALL AllCaps (ScanFunction$) : _
  67.          ZCR = 0 : _
  68.          GOSUB 12979 : _
  69.          GOSUB 12966 : _
  70.          GOTO 12962
  71.  
  72. 11010 FOR WasJ = WasZ TO ZHighestUserRecord
  73.          GET 5,WasJ
  74. 11015    CALL DispUserRec (WasQQ)
  75.          IF NOT ZOK THEN _
  76.             GOTO 11310
  77.          IF ZRet <> 0 THEN _
  78.            GOTO 11330
  79. 11107   IF NOT ZStopInterrupts THEN _
  80.            GOTO 11310
  81. 11110  x = 306                              'Pe 02/02/93
  82.       Gosub 30000                           'Pe 02/02/93
  83.         ZOutTxt$ = OutTxt$ + ZUserLocation$ + "  Q)uit"
  84.         CALL TopPrompt
  85.         x = 307                              'Pe 02/02/93
  86.         Gosub 30000                           'Pe 02/02/93
  87.         ZOutTxt$ = OutTxt$
  88.         IF ZRestrictByDate THEN _
  89.            ZOutTxt$ = ZOutTxt$ + _
  90.                 " $)RegDate"
  91.         GOSUB 12930
  92.         IF NOT ScanUsers AND ZWasQ = 0 THEN _
  93.            GOTO 11310
  94. 11115   ZWasZ$ = LEFT$(ZUserIn$(ZAnsIndex),1)
  95.         CALL AllCaps (ZWasZ$)
  96.         WasX = INSTR("DNPQFSMR$UXTBC",ZWasZ$)                   'Pe 02/04/92
  97.         IF ZWasZ$ = "" AND ScanUsers THEN _
  98.            GOTO 12965
  99.         ON WasX GOTO 11130,11160,11220,11320,11340,11390,11330, _
  100.                      11400,11450,11127,11490,11420,11423,11190     'Pe 02/04/92
  101.         GOTO 11110
  102. 11125   WasZ = VAL(ZUserIn$)
  103.         IF WasZ < 1 OR WasZ > ZHighestUserRecord THEN _
  104.            GOTO 11127
  105.         GOTO 11010
  106. 11127   x = 308                              'Pe 02/02/93
  107.         Gosub 30000                           'Pe 02/02/93
  108.         ZOutTxt$ = OutTxt$
  109.         GOSUB 12932
  110.         GOTO 11125
  111. '
  112. ' *  D - COMMAND FROM 5- USER MAINTENANCE OPTIONS (DELETE USER)
  113. '
  114. 11130   x = 309                              'Pe 02/02/93
  115.         Gosub 30000                           'Pe 02/02/93
  116.         ZOutTxt$ = OutTxt$
  117.         GOSUB 12995
  118.         IF ZYes THEN _
  119.            LSET ZUserName$ = CHR$(0) + _
  120.                              "deleted user" : _
  121.            LSET ZSecLevel$ = MKI$(ZMinLogonSec - 1) : _
  122.            LSET ZLastDateTimeOn$ = "01-01-80" + _
  123.                                      " " + _
  124.                                      ZTimeLoggedOn$
  125.         GOTO 11290
  126. '
  127. ' *  N - COMMAND FROM 5- USER MAINTENANCE OPTIONS (CHANGE USER PASSWORD)
  128. '
  129. 11160   GOSUB 12800
  130.         GOTO 11290
  131. 11185   CALL QuickTPut1 (ZUserLocation$ + " now " + ZWasCI$)
  132.         WasA1$ = "Enter new "
  133.         RETURN
  134. 11190 ' *** C - COMMAND FROM 5 - CHANGE CITY/STATE ***
  135.         CityStateSave$ = ZWasCI$
  136.         ZWasCI$ = ZCityState$
  137.         CALL Trim (ZWasCI$)
  138.         GOSUB 11185
  139.         GOSUB 12960
  140.         ZWasCI$ = CityStateSave$
  141.         GOTO 11290
  142. 11220   WasQQ = NOT WasQQ
  143.         GOTO 11015
  144. 11290   ZUserFileIndex = LOC(5)
  145.         GOSUB 12989
  146.         GOSUB 29440
  147.         GOSUB 12991
  148.         ZUserFileIndex = 0
  149.         GOTO 11015
  150. 11310   IF ScanUsers THEN _
  151.            GOTO 12965
  152. 11311 NEXT
  153. '
  154. ' *  Q - COMMAND FROM 5- USER MAINTENANCE OPTIONS (QUIT TO MAIN MENU)
  155. '
  156. 11320 ZUserFileIndex = WasTU
  157.       LSET ZUserRecord$ = UserRecordHold$
  158.       ZRegDate$ = RegDateHold$
  159.       IF EditFromRead > 0 THEN _
  160.          GOTO 11325
  161.       Exit Sub
  162. 11325 ZReply = ZFalse
  163.       JustReplied = ZTrue
  164.       QuotedReply = ZTrue
  165.       EditFromRead = 0
  166.       CALL GetMsgAttr
  167.       DontPrint = ZTrue
  168.       ZUserIn$ = "="
  169.       EditFromRead = 3
  170.       Exit Sub
  171. '
  172. ' *  M - COMMAND FROM 5- USER MAINTENANCE OPTIONS (MAIN USER MAINT. MENU)
  173. '
  174. 11330 CLOSE 2
  175.       IF EditFromRead > 0 THEN _
  176.          EditFromRead = 2
  177.       GOTO 11001
  178. '
  179. ' *  F - COMMAND FROM 5- USER MAINTENANCE OPTIONS (FIND USER)
  180. '
  181. 11340 ZOutTxt$ = ZPromptHash$ + _
  182.            " to find"
  183.       CALL SkipLine (1)
  184.       ZParseOff = ZTrue
  185.       GOSUB 12932
  186.       IF ZWasQ = 0 THEN _
  187.         GOTO 11340
  188.       TempHashValue$ = ZUserIn$
  189. 11341 IF LEN(TempHashValue$) < 3 OR LEN(TempHashValue$) > ZLenHash THEN _
  190.          GOTO 11340
  191.       CALL AllCaps (TempHashValue$)
  192.       IF ZStartIndiv < 1 THEN _
  193.          GOTO 11345
  194. 11342 ZOutTxt$ = ZPromptIndiv$ + _
  195.            " to find"
  196.    GOSUB 12995
  197.       IF ZWasQ = 0 THEN _
  198.          GOTO 11342
  199.       TempIndivValue$ = ZUserIn$
  200.       IF LEN(TempIndivValue$) > ZLenIndiv THEN _
  201.          GOTO 11342
  202.       CALL AllCaps (TempIndivValue$)
  203. 11345 GOSUB 12600
  204.       GOSUB 12990
  205.       GOSUB 12987
  206.       ZUserFileIndex = 0
  207.       IF Found THEN _
  208.          GOTO 11015
  209. 11380 ZOutTxt$ = TempHashValue$ + _
  210.            " " + _
  211.            TempIndivValue$ + _
  212.            " not found"
  213.       GOSUB 12977
  214.       GOTO 11310
  215. '
  216. ' *  S - COMMAND FROM 5- USER MAINTENANCE OPTIONS (CHANGE USER SECURITY)
  217. '
  218. 11390 GOSUB 11395
  219.       LSET ZSecLevel$ = MKI$(WasOF)
  220.       GOTO 11290
  221. 11395 ZOutTxt$ = "New sec level"
  222.       GOSUB 12932
  223.       ZWasZ$ = ZUserIn$(ZAnsIndex)
  224.       WasOF = VAL(ZWasZ$)
  225.       IF WasOF > ZUserSecLevel THEN _
  226.          WasOF = ZUserSecLevel
  227.       RETURN
  228. '
  229. ' *  R - COMMAND FROM 5- USER MAINTENANCE OPTIONS (RESET USER GRAPHICS)
  230. '
  231. 11400 ZWasA = CVI(MID$(ZUserOption$,9,2))
  232.       ZWasA = ZWasA AND &HFAFF                ' TURN HIGHLIGHTING OFF
  233.       LSET ZUserOption$ = LEFT$(ZUserOption$,5) + _
  234.                            "0" + _
  235.                            MID$(ZUserOption$,7,2) + _
  236.                            MKI$(ZWasA) + _
  237.                            MID$(ZUserOption$,11)
  238.       GOTO 11290
  239. 11420        ' * T - COMMAND FROM 5 - TIME USED
  240.       Temp = CVI (ZElapsedTime$)
  241.            CALL ChangeInt (ZTrue,"Time Used",Temp,-21900,2000)
  242.       IF ZWasQ <> 0 THEN _
  243.          LSET ZElapsedTime$ = MKI$(ZTestedIntValue)
  244.       GOTO 11290
  245. 11423        ' * B - COMMAND FROM 5 - BANKED TIME
  246.       Temp = ASC(ZBankTime$)
  247.       CALL ChangeInt (ZTrue,"Banked Time",Temp,0,255)
  248.       IF ZWasQ <> 0 THEN _
  249.          LSET ZBankTime$ = CHR$(ZTestedIntValue)
  250.       GOTO 11290
  251. '
  252. ' *  $ - COMMAND FROM 5 - USER MAINTENANCE (CHANGE REGISTRATION DATE)
  253. '
  254. 11450 ZOutTxt$ = "Enter new registration date (MM-DD-YY)"
  255.       GOSUB 12932
  256.       IF ZWasQ = 0 THEN _
  257.          GOTO 11015
  258. 11455 WorkDate$ = ZUserIn$(ZAnsIndex)
  259.       IF LEN(WorkDate$) < 8 THEN _
  260.          GOTO 11450
  261.       CALL ResetRegDate (WorkDate$)
  262.       IF NOT ZOK THEN _
  263.          GOTO 11450
  264.       LSET ZUserOption$ = LEFT$(ZUserOption$,10) + _
  265.                            ZRegDate$ + _
  266.                            MID$(ZUserOption$,13)
  267.       CALL SetRegDisplay
  268.       ZRegDate$ = RegDateHold$
  269.       GOTO 11290
  270. '
  271. ' *  X - COMMAND FROM 5 - USER MAINTENANCE (CHANGE XFER COUNTERS)             *
  272. '
  273. 11490 CALL CmndSysOpXfer
  274.       GOTO 11290
  275.  
  276. '
  277. ' *  A - COMMAND FROM 5- USER MAINTENANCE OPTIONS (ADD USER)
  278. '
  279. 12300 WasA1$ = ""
  280.       Attempts = 0
  281.       FirstNameSave$ = ZFirstName$
  282.       LastNameSave$ = ZLastName$
  283.       ActiveUserNameSave$ = ZActiveUserName$
  284.       CityStateSave$ = ZWasCI$
  285.       HashValueSave$ = HashValue$
  286.       IndivValueSave$ = ZIndivValue$
  287.       GOSUB 12500
  288.       GOSUB 12840
  289.       GOSUB 12850
  290.       GOSUB 12598
  291.       IF ZUserFileIndex = 0 THEN _
  292.          GOSUB 12984 : _
  293.          GOTO 12330
  294.       IF Found THEN _
  295.          WasD$ = "User already exists" : _
  296.          NumReturns = 1 : _
  297.         CALL LPrnt(WasD$,NumReturns) : _
  298.          GOSUB 12984 : _
  299.          GOTO 12330
  300. 12310 GOSUB 12630
  301.       GOSUB 12800
  302.       GOSUB 11395
  303.       ZTempSecLevel = WasOF
  304.       CALL SetNewUserDef
  305.       LSET ZLastDateTimeOn$ = ZCurDate$ + _
  306.                                 " " + _
  307.                                 ZTimeLoggedOn$
  308.       GOSUB 12960
  309.       CALL AllCaps (ZUserIn$)
  310.       LSET ZCityState$ = ZUserIn$
  311.       LSET ZElapsedTime$ = MKI$(0)
  312.       IF ZStartHash > 1 THEN _
  313.          MID$(ZUserRecord$,ZStartHash,ZLenHash) = HashValue$
  314.       IF ZStartIndiv > 1 THEN _
  315.          MID$(ZUserRecord$,ZStartIndiv,ZLenIndiv) = ZIndivValue$
  316.       GOSUB 29440
  317. 12320 GOSUB 12991
  318. 12330 ZUserSecLevel = UserSecLevelSave
  319.       ZFirstName$ = FirstNameSave$
  320.       ZLastName$ = LastNameSave$
  321.       ZActiveUserName$ = ActiveUserNameSave$
  322.       ZWasCI$ = CityStateSave$
  323.       HashValue$ = HashValueSave$
  324.       ZIndivValue$ = IndivValueSave$
  325.       ZUserFileIndex = WasTU
  326.       LSET ZUserRecord$ = UserRecordHold$
  327.       GOTO 11001
  328. '
  329. ' *  GET USER First AND Last NAMES
  330. '
  331. 12500 IF Attempts > 5 THEN _
  332.          ZFF = ZTrue : _
  333.          RETURN
  334. 12510 GOSUB 12700
  335.       Attempts = Attempts + 1
  336.       ZOutTxt$ = WasA1$ + _
  337.            ZFirstNamePrompt$
  338.       CALL SkipLine (1)
  339.       ZLogonActive = ZTrue
  340.       GOSUB 12555
  341.       IF ZWasQ = 0 THEN _
  342.           GOTO 12500
  343.       ZLogonActive = ZFalse
  344.       CALL Trim (ZWasZ$)
  345.       ZFirstName$ = ZWasZ$
  346. 12530 ZOutTxt$ = WasA1$ + _
  347.            ZLastNamePrompt$
  348.       ZParseOff = ZTrue
  349.       GOSUB 12555
  350.       IF ZWasQ = 0 THEN _
  351.           GOTO 12500
  352. 12540 CALL Trim (ZWasZ$)
  353.       ZLastName$ = ZWasZ$
  354.       IF LEN(ZLastName$) < 2 THEN _
  355.          IF LEN(ZFirstName$) > 2 THEN _
  356.             GOTO 12500
  357.       IF (LEN(ZFirstName$) + LEN(ZLastName$)) > 30 THEN _
  358.          GOTO 12500
  359.       IF UserSecLevelSave < ZSysopSecLevel THEN _
  360.          IF (LEN(ZFirstName$) < 2 OR LEN(ZLastName$) < 2) THEN _
  361.             GOTO 12500 _
  362.          ELSE IF LEFT$(ZFirstName$,1)=" " OR LEFT$(ZLastName$,1)=" " THEN _
  363.                  GOTO 12500
  364. 12550 ZActiveUserName$ = MID$(ZFirstName$ + " " + ZLastName$,1,31)
  365.       IF HashIndiv > 1 THEN _
  366.          IF ZWasQ < 3 THEN _
  367.             GOSUB 12558 : _
  368.             IF ZNo THEN _
  369.                GOTO 12500
  370.       ZWasZ$ = ZFirstName$
  371.       RETURN
  372. '
  373. ' *  CHECK FOR NAMES NOT ALLOWED
  374. '
  375. 12555 GOSUB 12932
  376.       IF ZWasQ = 0 THEN _
  377.          RETURN  ' 12500
  378. 12556 ZWasZ$ = ZUserIn$(ZAnsIndex)
  379. 12557 CALL AllCaps (ZWasZ$)
  380.       CALL RemNonAlf (ZWasZ$,31,91)
  381.       RETURN
  382. 12558 ZOutTxt$ = "Are you '" + _
  383.            ZActiveUserName$ + _
  384.            "' ([Y],N)"
  385.       GOSUB 12995
  386.       RETURN
  387.  
  388. '
  389. ' *  COMMON SEARCH USER FILE ROUTINE
  390. '
  391. 12598 TempHashValue$ = HashValue$
  392.       TempIndivValue$ = ZIndivValue$
  393. 12600 GOSUB 24910
  394.       GOSUB 12988
  395.       IF ZInConfMenu THEN _
  396.          IF NOT ZPrivateDoor THEN _
  397.            X = 46 : _         'Pe 01/17/93
  398.              Gosub 30000 : _     'Pe 01/17/93
  399.             CALL QuickTPut1 (OutTxt$)
  400. 12605 CALL OpenUser (ZHighestUserRecord)
  401.       GOSUB 29450
  402.       CALL FindUser (TempHashValue$,TempIndivValue$,ZStartHash,ZLenHash,_
  403.                      ZStartIndiv,ZLenIndiv,ZHighestUserRecord,Found,_
  404.                      ZUserFileIndex,ZWasSL)
  405.      IF Found THEN _
  406.         RETURN
  407.      IF CurUserCount < (ZHighestUserRecord-1)*.95 THEN _
  408.         RETURN
  409.      ZOutTxt$ = "No room for new users in " + ZConfName$
  410.       CALL UpdtCalr (ZOutTxt$,2)
  411.      IF ZActiveUserFile$ <> ZMainUserFile$ THEN _
  412.         ZUserFileIndex = 0 : _
  413.         RETURN
  414.       IF ZRememberNewUsers AND NOT ZSurviveNoUserRoom THEN _
  415.         ZOutTxt$ = "Sorry, " + _
  416.           ZFirstName$ + _
  417.           ", " + _
  418.           ZOutTxt$ : _
  419.      GOTO 12975
  420.       ZUserFileIndex = 0
  421.       IF ZSurviveNoUserRoom THEN _
  422.          ZRememberNewUsers = ZFalse
  423.       RETURN
  424. '
  425. '
  426. 12630 GOSUB 23000
  427.       CurUserCount = CurUserCount + (ZWasSL = 0) * ZRememberNewUsers
  428. 12632 GOSUB 24000
  429.       GOSUB 12985
  430.       IF ZRememberNewUsers THEN _
  431.          GOSUB 12989
  432.       GOSUB 12990
  433.       RETURN
  434. '
  435. '
  436. ' *  INFORM USER OF WHAT CONFERENCE USER FILE HE IS VIEWING
  437. '
  438. 12700 IF ZConfMode THEN _
  439.          ZOutTxt$ = "Users of " + _
  440.               ZConfName$ + _
  441.               ":" : _
  442.          GOSUB 12979
  443.       RETURN
  444. '
  445. '
  446. ' *  GET PASSWORD FROM NEWUSER
  447. '
  448. 12800 x = 310                              'Pe 02/02/93
  449.       Gosub 30000                           'Pe 02/02/93
  450.       CALL NewPassword (OutTxt$,ZFalse)
  451.       IF ZSubParm < 0 THEN _
  452.          exit sub
  453.       IF UserSecLevelSave < ZSysopSecLevel THEN _
  454.          IF ZUserIn$ = SPACE$(LEN(ZUserIn$)) THEN _
  455.             GOTO 12800
  456.       LSET ZPswd$ = ZWasZ$
  457.       RETURN
  458. '
  459. '
  460. '
  461. 12840 IF ZStartHash = 1 THEN _
  462.          HashValue$ = ZActiveUserName$ : _
  463.          RETURN
  464.       WasX$ = WasA1$ + _
  465.            ZPromptHash$
  466.       CALL UntilRight (WasX$,HashValue$,2,ZLenHash)
  467.       RETURN
  468. '
  469. '
  470. '
  471. ' *  GET FIELD TO INDIVIDUATE ONE USER FROM ANOTHER (NAME FIELD IS DEFAULT)
  472. '
  473. 12850 IF ZStartIndiv < 1 OR ZLenIndiv < 1 THEN _
  474.          RETURN
  475.       IF ZStartIndiv = 1 THEN _
  476.          ZIndivValue$ = ZActiveUserName$ : _
  477.          RETURN
  478.       IF ZExitToDoors THEN _
  479.          RETURN
  480.       WasX$ = WasA1$ + _
  481.            ZPromptIndiv$
  482.       CALL UntilRight (WasX$,ZIndivValue$,2,ZLenIndiv)
  483.       RETURN
  484. '
  485. '
  486. '
  487. 12930 ZTurboKey = -ZTurboKeyUser
  488. 12932 CALL PopCmdStack
  489.       GOTO 12997
  490.  
  491.  
  492. '
  493. ' *  GET CITY AND STATE FROM NEWUSER
  494. '
  495. 12960 ZOutTxt$ = WasA1$ + _
  496.                  ZUserLocation$
  497.       IF NOT ZNewUser THEN _
  498.          ZOutTxt$ = ZOutTxt$ + ZPressEnter$
  499.       ZParseOff = ZTrue
  500.       GOSUB 12932
  501.       IF ZWasQ = 0 OR ZUserIn$ = SPACE$(LEN(ZUserIn$)) THEN _
  502.          IF ZNewUser THEN _
  503.             GOTO 12960 _
  504.          ELSE RETURN
  505.       CALL AllCaps (ZUserIn$)
  506.       CALL QuickTPut1 ("Set to "+ZUserIn$)
  507.       LSET ZCityState$ = ZUserIn$
  508.       ZWasCI$ = ZUserIn$
  509.       RETURN
  510. '
  511.  
  512. '
  513. ' *  S - COMMAND FROM 5 - USER MAINTENANCE OPTIONS (SCAN USERS)
  514. '
  515. 12962 WasX = 0
  516.       ZFF = ZFalse
  517.       ZMacroMin = 99
  518.       ZOutTxt$ = "String to search"
  519.       GOSUB 12998
  520.       IF ZWasQ = 0 THEN _
  521.          GOTO 11001
  522.       CALL AllCaps (ZUserIn$)
  523.       WasWK$ = ZUserIn$
  524.       IF ScanFunction$ = "L" THEN _
  525.          WasWK$ = "," + _
  526.                STR$(VAL(WasWK$)) + _
  527.                ","
  528. 12963 GET 5,WasI
  529.       GOSUB 12966
  530.       WasX = INSTR(ScanField$,WasWK$)
  531.       IF WasX > 0 THEN _
  532.          GOTO 11015
  533. 12965 WasI = WasI + 1
  534.       IF WasI > ZHighestUserRecord THEN _
  535.          LSET ZUserRecord$ = UserRecordHold$ : _
  536.          GOTO 11001
  537.       WasX = 0
  538.       GOTO 12963
  539. 12966 ZFF = INSTR("NCPLH",ScanFunction$)
  540. 12967 ON ZFF GOTO 12968,12969,12970,12972,12971
  541.       GOTO 11001
  542. '
  543. ' *  N - COMMAND FROM 5 - USER MAINTENANCE SCAN FUNCTION (SEARCH FOR NAME)
  544. '
  545. 12968 ScanField$ = ZUserName$
  546.       RETURN
  547. '
  548. ' *  C - COMMAND FROM 5 - USER MAINTENANCE SCAN FUNCTION (SEARCH FOR CITY/ST)
  549. '
  550. 12969 ScanField$ = ZCityState$
  551.       RETURN
  552. '
  553. ' *  P - COMMAND FROM 5 - USER MAINTENANCE SCAN FUNCTION (SEARCH FOR PASSWORD)
  554. '
  555. 12970 ScanField$ = ZPswd$
  556.       RETURN
  557. '
  558. ' *  H - COMMAND FROM 5 - USER MAINTENANCE SCAN FUNCTION (SEARCH FOR HASH ID)
  559. '
  560. 12971 IF ZStartHash > 0 AND ZLenHash > 0 THEN _
  561.          ScanField$ = MID$(ZUserRecord$,ZStartHash,ZLenHash)
  562.       RETURN
  563. '
  564. ' *  L - COMMAND FROM 5 - USER MAINTENANCE SCAN FUNCTION (SEARCH FOR LEVEL)
  565. '
  566. 12972 ScanField$ = "," + _
  567.                     STR$(CVI(ZSecLevel$)) + _
  568.                     ","
  569.       RETURN
  570. '
  571. '
  572. '
  573. ' * STANDARD ENTRY FOR RBBS-PC'S COMMON TERMINAL OUTPUT ROUTINE
  574. '
  575. 12975 ZSubParm = 1
  576.       GOTO 12981
  577. 12976 ZSubParm = 2
  578.       GOTO 12981
  579. 12977 ZSubParm = 3
  580.       GOTO 12981
  581. 12978 ZSubParm = 4     ' no cr/lf
  582.       GOTO 12981
  583. 12979 ZSubParm = 5     ' cr/lf
  584.       GOTO 12981
  585. 12980 ZSubParm = 6
  586. 12981 CALL TPut
  587. 12983 IF ZSubParm < 0 THEN _
  588.          exit sub               
  589.       IF ZSubParm = 8 THEN _
  590.          GOSUB 12995
  591.       RETURN
  592. '
  593. ' * STANDARD ENTRY FOR RBBS-PC'S FILE LOCKING WHEN RUNNING MULTIPLE RBBS-PC'S
  594. '
  595. 12984 ZSubParm = 1  ' LOCK USERS & MESSAGES
  596.       GOTO 12994
  597. 12985 ZSubParm = 2  ' UNLOCK MESSAGES AND FLUSH
  598.       Flushed = ZTrue
  599.       GOTO 12994
  600. 12986 ZSubParm = 3  ' LOCK MESSAGES
  601.       GOTO 12994
  602. 12987 ZSubParm = 4  ' UNLOCK MESSAGES
  603.       GOTO 12994
  604. 12988 ZSubParm = 5  ' LOCK USERS
  605.       GOTO 12994
  606. 12989 ZSubParm = 6  ' LOCK USER BLOCK
  607.       GOTO 12994
  608. 12990 ZSubParm = 7  ' UNLOCK USERS
  609.       GOTO 12994
  610. 12991 ZSubParm = 8  ' UNLOCK USER BLOCK
  611.       GOTO 12994
  612. 12994 CALL FileLock
  613.       IF Flushed THEN _
  614.          FIELD 1,128 AS ZMsgRec$ : _
  615.          Flushed = ZFalse
  616.       IF ZSubParm = -1 THEN _
  617.          ZSubParm = -9 : _
  618.          CALL FindFKey : _
  619.          Exit Sub
  620.       RETURN
  621.  
  622. '
  623. ' * STANDARD ENTRY FOR RBBS-PC'S COMMON TERMINAL INPUT ROUTINE
  624. '
  625. 12995 GOSUB 12997
  626.       ZSubParm = 1
  627. 12996 CALL TGet
  628. 12997 IF ZSubParm < 0 THEN _
  629.         EXIT SUB
  630.       RETURN
  631. 12998 ZOutTxt$ = ZOutTxt$ + _
  632.            ZPressEnter$
  633.       GOTO 12995
  634. 12999 ZTurboKey = -ZTurboKeyUser
  635.       GOTO 12995
  636.  
  637. 13600 CLS
  638.       LOCATE ,,0
  639.       CALL PScrn (ZWasDF$ + " file missing/invalid.  Run CONFIG")
  640.       CALL DelayTime (3)
  641.          END 
  642.  
  643. 20093 LSET ZUserRecord$ = UserRecordHold$
  644.       GOSUB 29500
  645.       Exit Sub
  646. '
  647. '
  648. ' *  GET MESSAGE HEADER RECORD DATA
  649. '
  650. 23000 GET 1,1
  651.       HighMsgNumber = VAL(LEFT$(ZMsgRec$,8))
  652.       AutoAddSec   = CVI(MID$(ZMsgRec$,9,2))
  653.       CallsToDate! = VAL(MID$(ZMsgRec$,11,10))
  654.       ZMsgSecCats$ = LEFT$("U",-(MID$(ZMsgRec$,21,1) <> "/")) + _
  655.                      LEFT$("R",-(MID$(ZMsgRec$,22,1) <> "/")) + _
  656.                      LEFT$("P",-(MID$(ZMsgRec$,23,1) <> "/")) + "E"
  657.       IF ZUserSecLevel >= ZSecKillAny THEN _
  658.           ZMsgSecCats$ = "URPE"
  659.       IF ZMsgSecCats$ = "E" THEN _
  660.          ZMsgSecCats$ = "UE"
  661.       CurUserCount = VAL(MID$(ZMsgRec$,57,5))
  662.       FirstMsgRecord = VAL(MID$(ZMsgRec$,68,7))
  663.       ZNextMsgRec = VAL(MID$(ZMsgRec$,75,7))
  664.       HighestMsgRecord = VAL(MID$(ZMsgRec$,82,7))
  665.       IF ZActiveMessageFile$ = ZOrigMsgFile$ THEN _
  666.          ZMaxNodes = VAL(MID$(ZMsgRec$,127))
  667.       RETURN
  668. '
  669. ' *  UPDATE MESSAGE HEADER RECORD DATA
  670. '
  671. 24000 MID$(ZMsgRec$,1,8) = STR$(HighMsgNumber)
  672.       MID$(ZMsgRec$,11,10) = STR$(CallsToDate!)
  673.       MID$(ZMsgRec$,57,5) = STR$(CurUserCount)
  674.       MID$(ZMsgRec$,68,7) = STR$(FirstMsgRecord)
  675.       MID$(ZMsgRec$,75,7) = STR$(ZNextMsgRec)
  676.       MID$(ZMsgRec$,82,7) = STR$(HighestMsgRecord)
  677.       PUT 1,1
  678.       RETURN
  679. '
  680. '
  681. '
  682. 24910 GOSUB 12986
  683.           Gosub 25344
  684.          IF LOF(1) = 0 THEN 
  685.         ZWasDF$ = ZActiveMessageFile$
  686.         CLOSE 1
  687.         KILL ZActiveMessageFile$
  688.         GOSUB 12987
  689.          CLS
  690.       LOCATE ,,0
  691.       CALL PScrn (ZWasDF$ + " file missing/invalid.  Run CONFIG")
  692.       CALL DelayTime (3)
  693.          END 
  694.      End IF
  695.      GOSUB 23000
  696.      RETURN
  697. '
  698. '
  699. ' ****  RESTORE A MESSAGE BASE   ***
  700. '
  701. 25343 GOSUB 25344
  702.      GOSUB 23000
  703.      RETURN
  704. '
  705. ' *****  OPEN AND SETUP MESSAGE BASE  *****
  706. '
  707. 25344 CALL OpenMsg
  708.      IF ZErrCode = 64 THEN _
  709.         ZErrCode = 0 : _
  710.         GOTO 25350
  711.      FIELD 1, 128 AS ZMsgRec$
  712.      RETURN
  713. '
  714.  
  715. '
  716. 25350 IF ZConfName$ <> "MAIN" THEN _
  717.       X = 35 : _         'Pe 01/17/93
  718.         Gosub 30000 : _     'Pe 01/17/93
  719.         CALL QuickTPut1 (OutTxt$ + " " + OrigMsgName$)
  720.      ZActiveUserName$ = ZOrigUserNameDgs$                         'Dgs-ALias
  721.      ZFirstName$ = OrigFirstName$                                 'Dgs-ALias
  722.      CALL DeLink (ZConfName$)
  723.      ConfFileName$ = OrigMsgName$
  724.      ZNewsFileName$ = OrigNewsFileName$
  725.      ZTurboLogon = ZTrue
  726.      ZMarkedMsgs$ = ""
  727.      ZMarkedFiles$ = ""   'Pe 04/18/92
  728.      ZWasQ = 0
  729.      ZNewUser = ZFalse
  730.      ZInConfMenu = ZTrue
  731.      IF ZActiveUserName$ = "SYSOP" THEN _
  732.             ZActiveUserName$ = ZSecretName$ : _
  733.         CALL Trim (ZActiveUserName$)
  734.      ZConfigFileName$ = ZOrigCnfg$
  735.      CALL ReadDef (ZConfigFileName$)
  736.      IF ZOrigMsgFile$ <> ZActiveMessageFile$ THEN _
  737.         ZActiveMessageFile$ = ZOrigMsgFile$ : _
  738.         GOSUB 25343
  739.      IF ZOrigUserFile$ <> ZActiveUserFile$ THEN _
  740.         GOSUB 25380 : _
  741.         ZActiveUserFile$ = ZOrigUserFile$ : _
  742.         ZActiveUserName$ = ZOrigUserName$ : _
  743.         GOSUB 12598 : _
  744.         GOSUB 12990 : _
  745.         IF Found THEN _
  746.            GOSUB 29500 : _  'Was 9500
  747.            ZMainUserFileIndex = ZUserFileIndex : _
  748.            CALL SetPrompt : _
  749.            CALL XferType (2,ZTrue) _
  750.         ELSE ZUserFileIndex = 0 : _
  751.              ZMainUserFileIndex = 0
  752.      CALL UpdtCalr (ZActiveUserName$ +" Exited " + ZConfName$,3)  'Pe 11/07/91
  753.      ZConfName$ = "MAIN"
  754.      ConfNameSave$ = ZConfName$
  755.        IF ZCurPUI$ = "" OR ZSubBoard THEN _
  756.         ZCurPUI$ = ZMainPUI$
  757.         CALL FindIt (ZCurPUI$)
  758.         ZCustomPUI = ZOK
  759.         IF NOT ZOK THEN _
  760.         ZCurPUI$ = ""
  761.      ZPrevPUI$ = ""
  762.      ZUplds = ZGlobalUplds
  763.      ZDnlds = ZGlobalDnlds
  764.      ZDLToday! = ZGlobalDLToday!
  765.      ZBytesToday! = ZGlobalBytesToday!
  766.      ZDLBytes! = ZGlobalDLBytes!
  767.      ZULBytes! = ZGlobalULBytes!
  768.      ZBankTime = ZGlobalBankTime
  769. 25360 ZConfMode = ZFalse
  770.       BoardCheckDate$ = ZLastDateTimeOn$
  771.       ZSubBoard = ZTrue
  772.       GOSUB 12987
  773. 25375 IF ((ZUserSecLevel < ZAutoUpgradeSec) AND ZSubBoard) OR _
  774.         ((ZUserSecLevel < OrigUpgradeSec) AND NOT ZSubBoard) THEN _
  775.            IF ZUserSecLevel <> ZOrigSec THEN _
  776.               ZUserSecLevel = ZOrigSec : _
  777.               LSET ZSecLevel$ = MKI$(ZUserSecLevel)
  778.        RETURN
  779. '
  780. ' *****  UPDATE CURRENT USERS RECORD  ****
  781. '
  782. 25380 IF ZUserFileIndex < 1 THEN _
  783.         RETURN
  784.      IF ZAdjustedSecurity AND NOT ZSysop THEN _
  785.         LSET ZSecLevel$ = MKI$(ZUserSecLevel) : _
  786.         ZUserSecSave = ZUserSecLevel
  787.      IF ZSubBoard THEN _                                          'Dgs-ALias
  788.         ZActiveUserName$ = ZOrigUserNameDgs$ : _                  'Dgs-ALias
  789.         ZFirstName$ = OrigFirstName$                              'Dgs-ALias
  790.      CALL UpdateU (ZFalse)
  791.      RETURN
  792. '
  793. '
  794. 29440 IF ZUserFileIndex > 0 AND ZUserFileIndex < 32768 THEN _
  795.         PUT 5,ZUserFileIndex
  796.      RETURN
  797. '
  798. 29450 IF LOF(5) < 1 THEN 
  799.         ZWasDF$ = ZActiveUserFile$
  800.         CLS
  801.         LOCATE ,,0
  802.        CALL PScrn (ZWasDF$ + " file missing/invalid.  Run CONFIG")
  803.        CALL DelayTime (3)
  804.          END
  805.      End IF
  806.      FIELD 5,31 AS ZUserName$, _
  807.              15 AS ZPswd$, _
  808.               2 AS ZSecLevel$, _
  809.              14 AS ZUserOption$,  _
  810.              24 AS ZCityState$, _
  811.               2 AS MachineType$, _
  812.               1 AS ZBankTime$,_
  813.               4 AS ZTodayDl$, _
  814.               4 AS ZTodayBytes$, _
  815.               4 AS ZDlBytes$, _
  816.               4 AS ZULBytes$, _
  817.              14 AS ZLastDateTimeOn$, _
  818.               3 AS ZListNewDate$, _
  819.               2 AS ZUserDnlds$, _
  820.               2 AS ZUserUplds$, _
  821.               2 AS ZElapsedTime$
  822.      FIELD 5,128 AS ZUserRecord$
  823.      RETURN
  824. '
  825. 29500 GOSUB 29450
  826.      CALL SetSysOp
  827.      CALL SetUserPref
  828.      RETURN
  829.  
  830.  
  831. 30000 Call GetRBBSString(X,RBBSString$)     'Pe 01/16/93
  832.       OutTxt$ = RBBSString$                 'Pe 01/16/93 
  833.       RETURN
  834.  
  835. End Sub
  836.